package com.micro.modual.controller;

import com.micro.core.resp.RespJson;
import com.micro.core.resp.RespJsonData;
import com.micro.core.resp.RespJsonPageData;
import com.micro.modual.model.bo.systemresourceauth.RoleElementBindBO;
import com.micro.modual.model.bo.systemresourceauth.RoleElementFindBO;
import com.micro.modual.model.bo.systemresourceauth.RoleMenuBindBO;
import com.micro.modual.model.bo.systemresourceauth.SystemResourceAuthBO;
import com.micro.modual.model.dto.systemresourceauth.RoleResourceElementDTO;
import com.micro.modual.model.dto.systemresourceauth.SystemResourceAuthDetailDTO;
import com.micro.modual.model.dto.systemresourceauth.SystemResourceAuthListDTO;
import com.micro.modual.service.SystemResourceAuthService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;

import java.util.List;
import java.util.Map;

/**
 * <h1>角色菜单关联表 控制器</h1>
 * @author levelcoder
 * @version V1.0.0
 * @email LevelCoder@126.com
 * @date 2020-08-04 00:27:46
 */
@Api(value = "授权管理",tags = "授权管理")
@RestController
@RequestMapping(value = "systemResourceAuth")
public class SystemResourceAuthController {

    @Autowired
    private SystemResourceAuthService systemResourceAuthService;

    /**
     * <h2>根据角色编号查询所拥有的菜单权限</h2>
     * @param roleCode  角色编号
     * @return
     */
    @GetMapping(value = "/findRoleResourceMenu/{roleCode}")
    public RespJsonData<List<String>> findRoleResourceMenu(@PathVariable("roleCode") String roleCode){
        return systemResourceAuthService.findRoleResourceMenu(roleCode);
    }

    /**
     * <h2>根据角色编号绑定所拥有的菜单权限</h2>
     * @param roleMenuBindBO {@link RoleMenuBindBO} 角色菜单绑定 请求对象
     * @return
     */
    @PostMapping(value = "/bindRoleResourceMenu")
    public RespJson bindRoleResourceMenu(@RequestBody RoleMenuBindBO roleMenuBindBO){
        return systemResourceAuthService.bindRoleResourceMenu(roleMenuBindBO);
    }


    /**
     * <h1>根据角色编号菜单编号查询所拥有的元素信息</h1>
     * @param roleElementFindBO {@link RoleElementFindBO} 角色元素绑定 查询请求对象
     * @return {@link RoleResourceElementDTO} 角色元素绑定
     */
    @GetMapping(value = "/findRoleResourceElement")
    public RespJsonData<List<RoleResourceElementDTO>> findRoleResourceElement(RoleElementFindBO roleElementFindBO) {
        return systemResourceAuthService.findRoleResourceElement(roleElementFindBO);
    }

    /**
     * <h2>角色资源(按钮)相关:角色资源绑定</h2>
     * @param roleElementBO {@link RoleElementBindBO} 角色元素关联请求对象
     * @return
     */
    @PostMapping(value = "/bindRoleResourceElement")
    public RespJson bindRoleResourceElement(@RequestBody RoleElementBindBO roleElementBO) {
        return systemResourceAuthService.bindRoleResourceElement(roleElementBO);
    }

    /**
     * <h2>角色资源(按钮)相关:角色资源移除</h2>
     * @param roleElementBO {@link RoleElementBindBO} 角色元素关联请求对象
     * @return
     */
    @PostMapping(value = "/removeRoleResourceElement")
    public RespJson removeRoleResourceElement(@RequestBody RoleElementBindBO roleElementBO)  {
        return systemResourceAuthService.removeRoleResourceElement(roleElementBO);
    }
}

